/**
 * 
 */
package iut2.sponsor.client;

import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;

/**
 * Classe gerant l'affichage de la liste des lots
 */
public class VueLots extends Vue {
	
	/**
	 * panel contenant la liste des lots
	 */
	private VerticalPanel panel = new VerticalPanel();
	
	/**
	 * titre affiche en haut de la page
	 */
	private Label titre = new Label();

	/**
	 * constructeur remplissant la liste
	 */
	public VueLots() {
		titre.setText(lang.lotOffert());
		titre.setStyleName("titre");
		panel.add(titre);
		
		Sponsors spon   = Iut2sponsor.SINGLETON.getSponsors();
		int    lotsN    = Iut2sponsor.nbLotNecessaires;

		ProgressBar progress = new ProgressBar(lang.lotsPg(), 80, lotsN, ProgressBar.SHOW_REMAINING);
		progress.setProgress(spon.getNbLots());

		panel.add(progress);
		panel.add(new HTML("<hr />"));
		
		panel.add(new HTML("<br />" + lang.lotDetail() + "<br /><br /><ul>"));
		
		
		for (Sponsor sp: spon) {
			if (sp.getLots().size() > 0) {
				panel.add(new LotDesc(sp));
			}
		}
		
		panel.add(new HTML("</ul><div id=\"separation\"></div>" + lang.total() + " :  <span class=\"montant\"> " + spon.getNbLots() + " " + lang.lotsPg() + "</span>"));
	}
	
	/**
	 * Classe definissant l'affichage de la description d'un ensemble de lots offerts par un sponsor
	 */
	private class LotDesc extends HorizontalPanel {
		/**
		 * constructeur
		 * @param sp sponsor dont les lots sont a afficher dans la liste
		 */
		public LotDesc(Sponsor sp) {
			Grid grid = new Grid(1,2);
			Grid gridLots = new Grid(sp.getLots().size(),1);
			
			HorizontalPanel dons = new HorizontalPanel();
			dons.add(new HTML("<li class=\"listelots\">"));
			int i = 0;
			for (String p: sp.getLots()) {
				gridLots.setWidget(i,0,new HTML("<span class=\"montant\">1 "+p+"</span>"));
				i++;
			}
			dons.add(gridLots);
			dons.add(new HTML("</li>"));
			dons.addStyleName("listelots");
			
			grid.setWidget(0,0, dons);
			grid.setWidget(0,1, new Label(lang.offerPar(sp.getName())));
			
			this.add(grid);
		}
	}

	/**
	 * @return le panel contenant la liste des lots
	 */
	@Override
	public Widget getPanel() {
		return panel;
	}
	
	/**
	 * @param pxSize taille en pixels
	 * @return la progress bar des lots a afficher dans le menu
	 */
	public static Widget getProgress(int pxSize) {
		Sponsors    spon   = Iut2sponsor.SINGLETON.getSponsors();
		int         lotsN  = Iut2sponsor.nbLotNecessaires;
		ProgressBar pb     = new ProgressBar(lang.lotsPg(), pxSize, lotsN, 0);
		
		pb.setProgress(spon.getNbLots());
		return pb;
	}

}
